package hxx.topic;


import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import hxx.utils.MQConnectionUtils;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @Author 小坏
 * @Date 2020/6/29 17:08
 * @Version 1.0
 * @program:   topic 路由模式
 *
 * 1、消费者可以通过通配符来决定是否接受消息
 *  log.* 代表直接收一个
 *  log.# 全部接受
 */


//生产者交换机类型 producerFanout类型
public class TopicProducer {
    //交换机名称
    private static final String DESTINATION_NAME = "my_topic_estimation";

    public static void main(String[] args) throws IOException, TimeoutException {
        //1、创建mq链接
        Connection connection = MQConnectionUtils.newConnection();

        //2、创建通道
        Channel channel = connection.createChannel();

        /**
         * 3、生产者绑定交换机
         * 参数1、交换机名称
         * 参数2 、交换机类型
         *
         *  fanout只要绑定交换机、都会收到信息
         */
        channel.exchangeDeclare(DESTINATION_NAME, "topic");

        String RoutingKey = "log.sms";
        //4、创建消息
        String msg = "my_topic_estimation_msg" + RoutingKey;

        /**
         * 5、发送消息my_routing_estimation
         * 参数2 是routingkey 路由键
         */

        channel.basicPublish(DESTINATION_NAME, RoutingKey, null, msg.getBytes());

        //6、关闭通道
        channel.close();
        connection.close();
    }
}
